package com.module_live.view;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListPopupWindow;
import android.widget.Spinner;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.lib.app.CodeUtil;
import com.lib.fastkit.db.shared_prefrences.SharedPreferenceManager;
import com.lib.fastkit.http.ok.HttpUtils;
import com.lib.fastkit.utils.audio.AudioRecordManager;
import com.lib.fastkit.utils.json_deal.lib_mgson.MGson;
import com.lib.fastkit.utils.log.LogUtil;
import com.lib.fastkit.utils.px_dp.DisplayUtil;
import com.lib.fastkit.utils.share.tool.StringUtil;
import com.lib.fastkit.views.circle_image.niv.NiceImageView;
import com.lib.fastkit.views.recyclerview.tool.MyLinearLayoutManager;
import com.lib.fastkit.views.recyclerview.zhanghongyang.base.ViewHolder;
import com.lib.http.call_back.HttpDialogCallBack;
import com.lib.http.call_back.HttpNormalCallBack;
import com.lib.ui.adapter.BaseAdapter;
import com.lib.utls.glide.GlideConfig;
import com.lib.utls.upload.QiNiuUploadTask;
import com.lib.utls.upload.initerface.FileUploadListener;
import com.luck.picture.lib.tools.ToastManage;
import com.module_live.R;
import com.module_live.activity.CoachStudyLivingActivity;
import com.module_live.bean.UploadVoice;
import com.module_live.bean.coachstudy.StudentFinishedWorkBean;
import com.module_live.bean.coachstudy.TeacherUploadBean;
import com.module_live.bean.coachstudy.UploadHomeWorkImgBean;
import com.zyyoona7.popup.EasyPopup;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import androidx.recyclerview.widget.RecyclerView;

public class StudentFinsihedWorkPopup {

    private Activity activity;

    String identify = "";
    StudentFinishedWorkAdapter finishedWorkAdapter;
    public View parentView;

    List<StudentFinishedWorkBean.ObjBean> finishedList = new ArrayList<>();

    public StudentFinsihedWorkPopup(Activity activity) {

        this.activity = activity;

        initPopuPopu();
    }

    private EasyPopup popu;


    private void initPopuPopu() {
        popu = EasyPopup.create()
                .setContext(activity)
                .setContentView(R.layout.popup_study_worklist)
                .setWidth(WindowManager.LayoutParams.FILL_PARENT)
                .setHeight(WindowManager.LayoutParams.FILL_PARENT)
                .setOnViewListener(new EasyPopup.OnViewListener() {
                    @Override
                    public void initViews(View view, EasyPopup basePopup) {

                        initView(view);

                    }

                })
                .setFocusAndOutsideEnable(true)
                .apply();

    }

    public ExpandableListView elWorkList;

    private void initView(View view) {

        elWorkList = view.findViewById(R.id.el_work);

        finishedWorkAdapter = new StudentFinishedWorkAdapter();
        elWorkList.setAdapter(finishedWorkAdapter);

        elWorkList.setGroupIndicator(null);

        clearVoiceList();
    }

    public void updateFinishedWorkData(View parentView) {

        this.parentView = parentView;
        getStudentFinishedWorkList();
    }

    public void dismiss() {
        popu.dismiss();
    }


    public void showAnswerPopuPopu(View view) {
        clearVoiceList();

        popu.showAtLocation(view, Gravity.CENTER, 0, 0);

    }

    public interface FinishedWorkOperateListener {

        void onTeacherSetAudio(int type);
    }

    public FinishedWorkOperateListener operateListener;

    public void setFinishedWorkOperateListener(FinishedWorkOperateListener operateListener) {
        this.operateListener = operateListener;
    }

    public void clearVoiceList() {

        if (uploadVoiceList != null) {
            if (uploadVoiceList.size() > 0)
                uploadVoiceList.clear();
        }

        if (uploadVoiceMap != null) {
            if (uploadVoiceMap.size() > 0)
                uploadVoiceMap.clear();
        }

        if (StringUtil.isNotEmpty(dealedImgLoaclPath, true)) {

            dealedImgLoaclPath = "";
        }

    }


    class StudentFinishedWorkAdapter extends BaseExpandableListAdapter {

        @Override
        public int getGroupCount() {
            return finishedList.size();
        }

        @Override
        public Object getGroup(int groupPosition) {
            return finishedList.get(groupPosition);
        }

        @Override
        public long getGroupId(int groupPosition) {
            return groupPosition;
        }

        @Override
        public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
            GroupViewHolder groupViewHolder;
            if (convertView == null) {
                convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_study_setwork_top, null);
                groupViewHolder = new GroupViewHolder(convertView);
                convertView.setTag(groupViewHolder);
            } else {
                groupViewHolder = (GroupViewHolder) convertView.getTag();
            }
            //设置用户头像及用户姓名
            if (StringUtil.isNotEmpty(finishedList.get(groupPosition).getPhoto_url(), true)) {

                Glide.with(activity)
                        .load(finishedList.get(groupPosition).getPhoto_url())
                        .apply(GlideConfig.getCircleOptions())
                        .into(groupViewHolder.niceImageView);
            }

            if (StringUtil.isNotEmpty(finishedList.get(groupPosition).getUser_name(), true)) {
                groupViewHolder.tvName.setText(finishedList.get(groupPosition).getUser_name());
            }

            if (isExpanded) {
                groupViewHolder.ivArrow.setBackgroundResource(R.mipmap.icon_up);
            } else {
                groupViewHolder.ivArrow.setBackgroundResource(R.mipmap.icon_down);
            }

            return convertView;
        }

        @Override
        public int getChildrenCount(int groupPosition) {
            return 1;
        }

        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return finishedList.get(groupPosition).getCompleted_assignment_image().get(childPosition);
        }

        @Override
        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }

        @Override
        public boolean hasStableIds() {
            return false;
        }

        @Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
            final ChildViewHolder childViewHolder;
            if (convertView == null) {
                convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_study_finished_rv, null);
                childViewHolder = new ChildViewHolder(convertView);
                convertView.setTag(childViewHolder);
            } else {
                childViewHolder = (ChildViewHolder) convertView.getTag();
            }

            //为recycleview设置适配器和数据---gridviewmanager
            if (finishedList.get(groupPosition).getCompleted_assignment_image() != null &&
                    finishedList.get(groupPosition).getCompleted_assignment_image().size() > 0) {
                finishedWorkImgAdapter = new FinishedWorkImgAdapter(finishedList.get(groupPosition).getUser_id(), activity,
                        finishedList.get(groupPosition).getCompleted_assignment_image());
                MyLinearLayoutManager manager = new MyLinearLayoutManager(activity);
                manager.setOrientation(MyLinearLayoutManager.HORIZONTAL);
                childViewHolder.rvFinished.setLayoutManager(manager);
                childViewHolder.rvFinished.setAdapter(finishedWorkImgAdapter);
            }
            return convertView;
        }

        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return false;
        }
    }


    static class GroupViewHolder {
        public NiceImageView niceImageView;
        public TextView tvName;
        public ImageView ivArrow;

        public GroupViewHolder(View view) {

            niceImageView = view.findViewById(R.id.iv_user);
            tvName = view.findViewById(R.id.tv_name);
            ivArrow = view.findViewById(R.id.iv_arrow);
        }

    }

    static class ChildViewHolder {
        RecyclerView rvFinished;

        public ChildViewHolder(View view) {

            rvFinished = view.findViewById(R.id.rv_finished);
        }
    }

    FinishedWorkImgAdapter finishedWorkImgAdapter;


    // TODO: 2020/9/29 0029   作业图片适配器
    class FinishedWorkImgAdapter extends BaseAdapter<String> {

        public int studentId;

        public FinishedWorkImgAdapter(int studentId, Context context, List<String> mData) {
            super(context, mData);
            this.studentId = studentId;
        }

        @Override
        public int getLayoutId() {
            return R.layout.item_study_finished_rv_child_voice;
        }

        @Override
        protected void toBindViewHolder(ViewHolder holder, final int position, final List<String> mData) {

            holder.setIsRecyclable(false);

            ImageView ivWork = holder.getView(R.id.iv_work);

            TextView tvStart = holder.getView(R.id.tv_startVoice);
            final TextView tvUpload = holder.getView(R.id.tv_upload);
            final RecyclerView rvVoice = holder.getView(R.id.rv_voice);

            if (StringUtil.isNotEmpty(mData.get(position), true)) {

                Glide.with(activity)
                        .load(mData.get(position))
                        .apply(GlideConfig.getRoundOptions(10))
                        .into(ivWork);
            }

            ivWork.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    ZoomImagePopupUtils imagePopupUtils = new ZoomImagePopupUtils(activity);
                    imagePopupUtils.setZoomImage("StudentFinsihedWork", mData.get(position));
                    imagePopupUtils.setZoomImagePopupUtilsListener(new ZoomImagePopupUtils.ZoomImagePopupUtilsListener() {
                        @Override
                        public void onImageDealedSuccess(String imgLoaclPath, String imgUrl) {

                            if (StringUtil.isNotEmpty(imgLoaclPath, true)) {
                                dealedImgLoaclPath = imgLoaclPath;
                            }
                            //上传图片到七牛
                            upLoadImage(imgUrl, studentId, mData, position);

                        }
                    });
                    imagePopupUtils.showAnswerPopuPopu(parentView);

                }
            });

            //初始隐藏上传语音按钮
            if (uploadVoiceMap.size() == 0) {
                tvUpload.setVisibility(View.GONE);
            }

            tvStart.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    //如果老师已经批改过图片
                    if (StringUtil.isNotEmpty(dealedImgLoaclPath, true)) {
                        //当老师点击开始录入，暂时关闭在直播间的语音发布
                        if (operateListener != null) {
                            operateListener.onTeacherSetAudio(0);
                        }

                        TeacherDealRecordPopup recordPopup = new TeacherDealRecordPopup(activity);
                        recordPopup.updateDealImgAndView(dealedImgLoaclPath, parentView);
                        recordPopup.showAnswerPopuPopu(parentView);
                        recordPopup.setTeacherDealedRecordListener(new TeacherDealRecordPopup.TeacherDealedRecordListener() {
                            @Override
                            public void onTeacherRecordData(List<UploadVoice> uploadVoice) {

                                //释放麦克风资源
                                AudioRecordManager.getInstance(activity).relaseAudioManager();

                                if (uploadVoice.size() > 0) {

                                    //显示上传按钮
                                    tvUpload.setVisibility(View.VISIBLE);

                                    LogUtil.e("uploadVoice的长度为：" + uploadVoice.size());

                                    //因为直接添加到map会被当做对象覆盖，需要多添加一次，保证数据不被覆盖
                                    uploadVoiceList.addAll(uploadVoice);
                                    LogUtil.e("uploadVoiceList的长度为：" + uploadVoiceList.size());

                                    uploadVoiceMap.put(position, uploadVoiceList);
                                    LogUtil.e("uploadVoiceMap的长度为：" + uploadVoiceMap.size());

                                    voiceListAdapter = new TeacherVoiceListAdapter(activity, uploadVoiceMap.get(position));
                                    MyLinearLayoutManager manager = new MyLinearLayoutManager(activity);
                                    rvVoice.setLayoutManager(manager);
                                    rvVoice.setAdapter(voiceListAdapter);

                                }
                            }
                        });
                    } else {

                        ToastManage.s(activity, "请先批改学生上传的作业哦！");
                    }
                }
            });

            //点击上传语音，先判断容器的长度，如果符合，先选择科目，最后打开老师语音流
            tvUpload.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if (uploadVoiceMap.size() == 0) {

                        ToastManage.s(activity, "您还没有录入语音哦");
                    } else if (uploadVoiceMap != null && uploadVoiceMap.size() > 0) {

                        //显示科目选择框，确定之后将指定为的数据提交服务器
                        showSubjectChooseDialog(position, studentId, mData);
                        tvUpload.setVisibility(View.GONE);

                    }
                }
            });

        }
    }


    String dealedImgLoaclPath;

    TeacherVoiceListAdapter voiceListAdapter;

    private Map<Integer, List<UploadVoice>> uploadVoiceMap = new HashMap<>();

    List<UploadVoice> uploadVoiceList = new ArrayList<>();

    class TeacherVoiceListAdapter extends BaseAdapter<UploadVoice> {

        public TeacherVoiceListAdapter(Context context, List<UploadVoice> mData) {
            super(context, mData);
        }

        @Override
        public int getLayoutId() {
            return R.layout.item_study_finished_voice;
        }

        @Override
        protected void toBindViewHolder(ViewHolder holder, int position, List<UploadVoice> mData) {

            LinearLayout linVoice = holder.getView(R.id.lin_item_voice);
            String voicePlayUrl = mData.get(position).getPlayUrl();

            if (StringUtil.isNotEmpty(voicePlayUrl, true)) {

                instertVoice(linVoice, voicePlayUrl, true);
            }

        }

    }

    private void instertVoice(LinearLayout linVocie, String url, boolean isDletedAble) {

        UploadVoice uploadVoice = new UploadVoice();
        uploadVoice.setPlayUrl(url);

        final CommonSoundItemView commonSoundItemView = new CommonSoundItemView(activity);
        commonSoundItemView.isLocalVoice(false);

        commonSoundItemView.isDletedAble(isDletedAble);

        commonSoundItemView.setAudioEntity(uploadVoice);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.CENTER;
        params.topMargin = DisplayUtil.dip2px(activity, 16);
        commonSoundItemView.setLayoutParams(params);

        linVocie.addView(commonSoundItemView);

    }


    /**
     * 获取学生已提交作业列表
     */
    public void getStudentFinishedWorkList() {

        HttpUtils.with(activity)
                .addParam("requestType", "STUDENT_WORK_RECORD")
                .addParam("token", SharedPreferenceManager.getInstance(activity).getUserCache().getUserToken())
                .addParam("course_id", CoachStudyLivingActivity.course_id)
                .addParam("edit_or_view", 0)
                .addParam("recording_manner", 1)
                .execute(new HttpNormalCallBack<StudentFinishedWorkBean>() {
                    @Override
                    public void onSuccess(StudentFinishedWorkBean result) {
                        if (CodeUtil.CODE_200 == result.getCode()) {

                            if (finishedList.size() > 0) {
                                finishedList.clear();
                            }

                            finishedList.addAll(result.getObj());
                            finishedWorkAdapter.notifyDataSetChanged();
                        }

                    }

                    @Override
                    public void onError(String e) {

                    }
                });
    }


    /**
     * 上传图片操作
     * compressPath用于上传本地文件到七牛
     *
     * @param compressPath
     */
    public void upLoadImage(String compressPath, final int studentId, final List<String> mData, final int position) {

        QiNiuUploadTask qiNiuUploadTask = new QiNiuUploadTask(activity);
        qiNiuUploadTask.setFileUploadListener(new FileUploadListener() {
            @Override
            public void onProgress(int progress) {

            }

            @Override
            public void onSuccess(String s) {

                if ("".equals(s) || null == s || "null".equals(s) || s.length() < 5) {

                    ToastManage.s(activity, "上传失败，请重新选择!");
                } else {

                    String urlHead = SharedPreferenceManager.getInstance(activity).getUserCache().getQiNiuUrl();
                    LogUtil.e("获取的路径：" + urlHead + s);
                    //上传图片到服务器
                    sendHomeWorkImgToService(s, studentId);

                    //10-31因为需要设置语音，所以图片不删除
//                    mData.remove(position);
//                    if (finishedWorkImgAdapter != null) {
//                        finishedWorkImgAdapter.notifyDataSetChanged();
//                    }
                }
            }

            @Override
            public void onError(String e) {

//                Looper.prepare();
//                ToastManage.s(activity, "图片上传失败");
//                Looper.loop();
                LogUtil.e("图片上传失败");

            }
        });
        qiNiuUploadTask.execute(compressPath, SharedPreferenceManager.getInstance(activity).getUserCache().getQiNiuToken());

    }

    private void sendHomeWorkImgToService(String s, int studentId) {

        com.lib.fastkit.http.ok.HttpUtils.with(activity)
                .addParam("requestType", "HOMEWORK_AFTER_TEACHER_CORRECTION")
                .addParam("token", SharedPreferenceManager.getInstance(activity).getUserCache().getUserToken())
                .addParam("course_id", CoachStudyLivingActivity.course_id)
                .addParam("correct_homework_image", s)
                .addParam("student_id", studentId)
                .execute(new HttpDialogCallBack<UploadHomeWorkImgBean>() {
                    @Override
                    public void onSuccess(UploadHomeWorkImgBean result) {
                        if (CodeUtil.CODE_200 == result.getCode()) {
                            ToastManage.s(activity, "作业批改成功");
                            LogUtil.e("批改作业上传服务器成功");
                        } else if (400 == result.getCode()) {
                            ToastManage.s(activity, "图片上传失败");
                        }

                    }

                    @Override
                    public void onError(String e) {

                    }
                });
    }

    private void showSubjectChooseDialog(final int postion, final int studentId, final List<String> mData) {

        String[] subjArr = {"语文", "数学", "英语", "化学"};

        View view = LayoutInflater.from(activity).inflate(R.layout.popup_askchoose, null);

        ImageView iv_hide = view.findViewById(R.id.new_iv_hide);
        Spinner spinSubj = view.findViewById(R.id.new_spin_grade);
        spinSubj.setDropDownVerticalOffset(40);

        try {
            Field popup = Spinner.class.getDeclaredField("mPopup");
            popup.setAccessible(true);
            // Get private mPopup member variable and try cast to ListPopupWindow
            ListPopupWindow popupWindow = (ListPopupWindow) popup.get(spinSubj);
            // Set popupWindow height to 500px
            popupWindow.setHeight(200);
        } catch (Exception e) {
            // silently fail...
            LogUtil.e("Exception为：" + e.getMessage().toString());
        }

        spinSubj.setAdapter(new TvArrayAdapter(activity, subjArr));

        LinearLayout linPay = view.findViewById(R.id.new_lin_pay);
        final AlertDialog dialog = new AlertDialog.Builder(activity)
                .setView(view)
                .setCancelable(true)
                .show();

        spinSubj.setOnItemSelectedListener(new SubjectSpinnerAdapter());

        iv_hide.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        linPay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (TextUtils.isEmpty(chooseSubjectStr)) {
                    ToastManage.s(activity, "选择科目才能进行区分哦！");
                    return;
                } else {

                    LogUtil.e("选择的科目是：" + chooseSubjectStr);
                    if (StringUtil.isNotEmpty(chooseSubjectStr, true)) {

                        if (uploadVoiceMap.size() > 0) {

                            List<UploadVoice> uploadVoiceList = uploadVoiceMap.get(postion);

                            TeacherUploadBean uploadBean = new TeacherUploadBean();
                            uploadBean.setSubject(chooseSubjectStr);
                            List<TeacherUploadBean.Voice_description> voiceList = new ArrayList<>();
                            for (int i = 0; i < uploadVoiceList.size(); i++) {

                                TeacherUploadBean.Voice_description description = new TeacherUploadBean.Voice_description();
                                description.setIndex(i);
                                description.setVoice_hash(uploadVoiceList.get(i).getUrl());
                                voiceList.add(description);
                                uploadBean.setVoice_description(voiceList);
                            }

                            String uploadVoiceJson = MGson.newGson().toJson(uploadBean);
                            LogUtil.e("需要上传的语音数据为：" + uploadVoiceJson);

                            if (StringUtil.isNotEmpty(uploadVoiceJson, true)) {

                                dialog.dismiss();
                                //将该图片的语音发送到服务器
                                sendTeacherVoiceUploadService(uploadVoiceJson, studentId, mData, postion);
                            }
                        }
                    }
                }
            }
        });
    }

    private void sendTeacherVoiceUploadService(String uploadVoiceJson, int studentId, final List<String> mData, final int position) {

        HttpUtils.with(activity)
                .addParam("requestType", "UPLOAD_VOICE")
                .addParam("token", SharedPreferenceManager.getInstance(activity).getUserCache().getUserToken())
                .addParam("student_id", studentId)
                .addParam("course_id", CoachStudyLivingActivity.course_id)
                .addParam("voice", uploadVoiceJson)
                .execute(new HttpDialogCallBack<UploadHomeWorkImgBean>() {
                    @Override
                    public void onSuccess(UploadHomeWorkImgBean result) {

                        if (CodeUtil.CODE_200 == result.getCode()) {

                            ToastManage.s(activity, "语音上传成功！");

                            if (uploadVoiceList.size() > 0) {
                                uploadVoiceList.clear();
                            }

                            //语音发布成后，重新给老师发布语音
                            if (operateListener != null) {
                                operateListener.onTeacherSetAudio(1);
                            }

                            //因为会出现多次提交的问题，隐藏作业弹出框
                            dismiss();
                        }
                    }

                    @Override
                    public void onError(String e) {

                    }
                });


    }

    public class TvArrayAdapter extends android.widget.BaseAdapter {

        private String[] mStringArray;
        private Context context;

        public TvArrayAdapter(Context context, String[] mStringArray) {
            this.context = context;
            this.mStringArray = mStringArray;
        }

        @Override
        public int getCount() {
            return mStringArray.length;
        }

        @Override
        public Object getItem(int position) {
            return mStringArray[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {

//            LayoutInflater inflate1 = LayoutInflater.from(context);
//            View view = inflate1.inflate(R.layout.popup_gradesubjselect, null);
//
//            RecyclerView rvSelect = view.findViewById(R.id.rv_select);
//            SelectAdapter selectAdapter = new SelectAdapter(context, mStringArray);
//            MyLinearLayoutManager manager = new MyLinearLayoutManager(getActivity());
//            rvSelect.setLayoutManager(manager);
//            rvSelect.setAdapter(selectAdapter);

            LayoutInflater _LayoutInflater = LayoutInflater.from(context);
            convertView = _LayoutInflater.inflate(R.layout.item_select, null);
            if (convertView != null) {
                TextView tv = (TextView) convertView.findViewById(R.id.tv_text);
                tv.setText(mStringArray[position]);
            }
            return convertView;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            LayoutInflater _LayoutInflater = LayoutInflater.from(context);
            convertView = _LayoutInflater.inflate(R.layout.item_select, null);
            if (convertView != null) {
                TextView tv = (TextView) convertView.findViewById(R.id.tv_text);
                tv.setText(mStringArray[position]);
            }
            return convertView;
        }
    }

    private String chooseSubjectStr = "";

    class SubjectSpinnerAdapter implements AdapterView.OnItemSelectedListener {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String item = (String) parent.getItemAtPosition(position);
            if (StringUtil.isNotEmpty(item, true)) {
                chooseSubjectStr = item;
            }
            LogUtil.e("选中的科目为：" + item);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    }
}
